/**
 * 网络请求拦截器及配置
 */
import uni_request from './uni_request.js'
import util from './util.js'
const request = uni_request({ // 有效配置项只有三个
    baseURL: util.baseUrl, //baseURL
    timeout: 6000, // 超时时间
   /* heaer: { 'x-custom-header': 'x-custom-header' } // 设置请求头，建议放在请求拦截器中 */
})  
//请求拦截器
request.interceptors.request.use(async (config, method, url, data) => {
   // await new Promise(resolve => setTimeout(() => resolve(), 0))
   // console.log('请求拦截器, 网络请求会等 n 秒后上面的异步任务结束后执行') // args[0] method args[1] url args[3] data
   var user = uni.getStorageSync("USER_KEY");
   if (user) {
      config.header.Authorization = 'Bearer ' + user.token // 修改请求头
   } 
   /*  config.body.test = 'test' // 修改请求体 */
    return config 
	
})
//响应拦截器
request.interceptors.response.use(async (response, method, url, data) => { // 响应拦截器（可以设置多个, 同时可以也可以使用异步方法）
    const { data: res } = response // args[0] method args[1] url args[3] data
  // await new Promise(resolve => setTimeout(() => resolve(), 0))
    /* if (res.code === 200) {
        console.log('响应拦截器， 会阻塞 n s')
    } */
    return response
})
 
//全局错误监听 
request.onerror=async (...args) => { // 请求失败统一处理方法（可以也可以使用异步方法）
    console.log('网络请求失败了', `url为${args[1]}`)
	if(args[4]=='401'){
		util.msg("亲亲，您登录再来哦")	
    	//console.log("亲亲，您登录再来哦")
		util.goTo('/pages/login/login')		
	}else if(args[4]=='400'){
		util.msg(JSON.stringify(args[5].data.errors))	
		//console.log(JSON.stringify(args[5].data.errors))
	}else{		
		//console.error(JSON.stringify(args))
		util.msg(args[3]) 
	}
}
export default request